﻿namespace UnityEditorInternal
{
    using System;
    using System.Runtime.CompilerServices;
    using UnityEngine;

    public sealed class State : UnityEngine.Object
    {
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern bool GetIKOnFeet();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern Motion GetMotion(int subLayerIndex);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern string GetName();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern Vector3 GetPosition();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern float GetSpeed();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern StateMachine GetStateMachine();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern string GetTag();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern string GetUniqueName();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern int GetUniqueNameHash();
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        private static extern void INTERNAL_CALL_SetPosition(UnityEditorInternal.State self, ref Vector3 pos);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void SetIKOnFeet(bool val);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void SetMotion(int subLayerIndex, Motion motion);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void SetName(string name);
        public void SetPosition(Vector3 pos)
        {
            INTERNAL_CALL_SetPosition(this, ref pos);
        }

        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void SetSpeed(float speed);
        [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall]
        public extern void SetTag(string tag);
    }
}

